#include<iostream>
#include"Tcpserver.hpp"
#include"Servercal.hpp"
#include<functional>

void Usage(const std::string& proc)
{
    std::cout << "/n/rUsage: " << proc << " serverport[1024+]\n" << std::endl;
}


int main(int argc,char* argv[])
{
    if(argc != 2)
    {
        Usage(argv[0]);
        exit(0);
    }
    Servercal cal;
    //bind:一般用来绑定某个对象的某个函数,因为需要对象的this指针，因此要传入对象，std::placeholders::_1表示绑定函数有几个参数
    Tcpserver* tcps = new Tcpserver(8888,std::bind(&Servercal::Calculate,&cal,std::placeholders::_1));
    tcps->InitServer();
    tcps->Start();

    //测试
    // Request req(123,456,'+');
    // std::string s;
    // req.Serialize(s);
    // s = EnHeader(s);


    // std::cout << s << std::endl;

    // std::string content;
    // DeHeader(s,content);
    // Request temp;
    // temp.DeSerialize(content);
    // std::cout << temp.data1_ << std::endl;
    // std::cout << temp.op_ << std::endl;
    // std::cout << temp.data2_ << std::endl;


    // Response resp(579,0);
    // std::string content;
    // resp.Serialize(content);
    // std::string package = EnHeader(content);

    // std::cout << package << std::endl;

    // content = "";
    // DeHeader(package,content);
    // Response temp1;
    // temp1.DeSerialize(content);
    // std::cout << temp1.result_ << std::endl;
    // std::cout << temp1.code_ << std::endl;


    return 0;
}